package com.ia.aistream.manager.authen;

import com.alibaba.fastjson.JSONObject;
import com.ia.aistream.manager.authen.conf.TokenFrom;
import com.ia.aistream.model.system.dto.OpenTokenDto;
import com.ia.aistream.model.system.entity.SysUser;
import io.jsonwebtoken.Claims;

import java.util.Map;

/**
 * @author guoxy
 */
public interface ITokenManager {

    String TOKENID_KEY = "token_id";

    String ADMIN_TOKENID_KEY = "admin_token_id";

    String ADMIN_TOKEN_KIND_KEY = "kind";

    /**
     * 保存token信息
     *
     * @param from         来源
     * @param loginTokenId 令牌ID
     * @param user        用户信息
     */
    void saveToken(TokenFrom from, String loginTokenId, SysUser user);

    /**
     * 删除token
     *
     * @param token
     */
    void deleteToken(String token);

    /**
     * 登录成功之后生成token
     *
     * @param from    来源
     * @param tokenId tokenId
     * @return
     */
    OpenTokenDto generateUserToken(TokenFrom from, String tokenId);

    /**
     * 获取token中包含的admin对象
     *
     * @param adminToken adminToken
     * @return
     */
    SysUser getTokenUser(String adminToken);

    /**
     * 刷新token有效时长
     *
     * @param userToken
     */
    void refreshUserToken(String userToken);


}
